package com.fast.remote.channel.api;
/**
 * 外部通道对接接口类
 */

import java.util.Map;

import com.fast.remote.channel.vo.NoticeCfgVo;
import com.fast.remote.channel.vo.PayOrderParam;
import com.fast.remote.channel.vo.ResultVo;

public interface ChannelPayApi {
	/**
	 * 请求支付传入  
	 * @param param 订单请求报文
	 * @param keys 支付秘钥参数；多个参数以都点隔开
	 * @param ext 扩展参数
	 * @return 回应结果
	 */
	public ResultVo initPay(PayOrderParam param, String keys,Map<String, String> ext);
	
	/**
	 * 确认支付 用于快捷/无卡支付模式
	 * @param param
	 * @param keys
	 * @param ext
	 * @return
	 */
	public ResultVo confirmPay(PayOrderParam param, String keys,Map<String, String> ext);
	
	/**
	 * 订单状态查询
	 * @param param
	 * @param keys
	 * @param ext
	 * @return
	 */
	public ResultVo query(PayOrderParam param, String keys,Map<String, String> ext);
	
	/**
	 * 异步通知解析验证类
	 * @param noticeParam 异步通知参数
	 * @param noticeStr 异步通知字符串
	 * @param keys 交易秘钥信息
	 * @param ext 扩展参数
	 * @return
	 */
	public ResultVo syncNotice(Map<String, String> noticeParam,String noticeStr,String keys,Map<String, String> ext);
	
	/**
	 * 获得异步通知设置信息，该方法必须实现
	 * @return
	 */
	public NoticeCfgVo syncNoticeCfg();
	
}
